package com.jfm.jfmm.collector.entity.template;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * @author DYang
 * @since 2024-10-13 21:35
 *
 * SNMP 模板
 */
@Data
public class SNMP {
    /**
     * SNMP 主机
     */
    private String host;
    /**
     * SNMP 端口
     */
    private Integer port;
    /**
     * SNMP 社区
     */
    private String community;
    /**
     * SNMP 版本
     */
    private String version;
    /**
     * 检查主机
     */
    private boolean checkHost;
    /**
     * 检查 OID
     */
    private boolean checkOid;
    /**
     * 用于检测SNMP 可用性OID
     */
    private String oids;
    /**
     * 检测频率(s)
     */
    private int frequency;
    /**
     * 采集项
     */
    private List<Item> items;

    @Getter
    @Setter
    public static class Item{
        /**
         * 采集项名称
         */
        private String name;
        /**
         * 采集项代码
         */
        private String code;
        /**
         * OID
         */
        private String oids;
        /**
         * 单位
         */
        private String unit;
        /**
         * 采集方式 get,walk
         */
        private String method;
        /**
         * 采集频率
         */
        private int frequency;
        /**
         * 采集频率单位
         * s：秒 m：分 h：时 d: 日
         */
        private String timeUnit;
        /**
         * SNMP 超时时间(ms)
         */
        private long timeout;
        /**
         * 失败尝试次数，除去本次外，尝试次数，即采集次数>=1
         */
        private int retry;
        /**
         * 失败尝试间隔，单位为秒（s）
         */
        private int tryInterval;
        /**
         * 采集方式：COLLECT 主动采集
         *         CALCULATE 计算获取值
         */
        private String collectType;
        /**
         * 是否启用
         */
        private boolean enabled;
        /**
         * 描述
         */
        private String description;
        /**
         * 数据类型
         */
        private String dataType;
        /**
         * 保存时间，单位为小时
         */
        private long saveTime;
        /**
         * JS 函数
         */
        private String jsFunc;
        /**
         * 依赖项
         */
        private String[] depends;

    }

}
